<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 在当前作用域下，不管判断条件是否成功，都会进行变量提升：
        // var ：还是只声明
        // console.log(a); //undefined
        // if(1==2){
        //   var a=12;
        // }
        // console.log(a);//undefined


        //{}+es6 方式声明的变量---块级作用域
        // {
        //     let a=10;
        //     console.log(a);
        // }
        // console.log(a);
 

        //function 一定会变量提升  只是声明，不赋值
        //function：
        // ● 新版本浏览器中的function 只是声明，不定义
        // ● 在老版本中还是声明和定义（仅限判断语句）
        // console.log(fn);//undefined
        // if(1==2){
        //     function fn(){
        //         console.log(1)
        //     }
        // }
        // console.log(fn);//undefined


        // console.log(a);//undeifned
        // if(a in window){
        //     var a=100;
        // }
        // console.log(a);//100

        // console.log(a);//报错
        // if(true){
        //     a=100;
        // }
        // console.log(a);//报错

        // function fn(){
        //     console.log(f2);
        //     return function f1(){
        //     }
        //     function f2(){
        //         console.log("f2")
        //     }
        // }
        // fn();
    </script>
</body>
</html>